Conversation
…o avoid throwing assertion errors when empty
…le, and guarantee that xRange is valid when constructing an xRange for a CursorFrame
|
@jaredjj3 where are the hints now? Sorry I do not find them. |
|
cursor.getCurrentState().hints.get() |
|
I get Property 'getCurrentState' does not exist on type 'CursorState'.ts(2339) |
|
If you have a CursorState object, it should just be cursorState.hints.get(). |
|
Hi @jaredjj3 I have two doubts:
|
All the pitches existing in the previous state will also have a sustain hint, even though that's not completely accurate. If this is undesirable, would you file a bug please? That's a shortcoming of the way Lines 53 to 55 in 1bfc4f7 I think I need to create an
Me too, that's definitely a bug. Right now, the tests just check that nothing is thrown when getting hints. However, I think this warrants more thorough tests. |
|
@jaredjj3 I have a suggestion. What about making the hints pitch based rather than note based? Then we would have the types start, stop, keep. |
|
The reason it's based on notes is to support more use cases. For example, if you want to color and uncolor the notes based on if they're active or not, just having the pitch is not enough information. |

This PR fixes the bug mentioned in #260 (comment). It will be released in 0.1.7.
CursorFrameHinttoCursorStateHint.StartHintandStopHint.CursorStateHint[]calculation lazy.CursorStateHint(checks that getting hints does not throw).Cursor.iterable.rendering.Documentbug described in Pianoplay integration #260 (comment) by allowingelements.Noteto return multiple pitches.elements.Note.getSubtype(note or chord).I added playback_chords.musicxml to the vexml playback test suite, which is a snippet from #260 (comment).